//庆功会 多重背包
#include <iostream>
using namespace std;
const int MAXN=500;
const int MAXM=6000;
int n,m;
int w[MAXN+1],c[MAXN+1],s[MAXN+1];//价格，价值，数量 
int maxc[MAXM+1];//maxc[v]拔款为v取得的最大价值

int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>w[i]>>c[i]>>s[i];

    for(int i=1;i<=n;i++){ 
        for(int v=m;v>=w[i];v--){
            for(int k=1;k<=min(s[i],v/w[i]);k++)
                maxc[v]=max(maxc[v],maxc[v-k*w[i]]+k*c[i]);
        }
    }
    cout<<maxc[m];
}